Application isolation system

ABSTRACT

A facility for managing a document conversion environment is described. In various embodiments, the facility includes a native application associated with a native document type and an isolation service. The isolation service determines whether a native application associated with the native document type has started and when it has not started, starts the native application and causes the started native application to load and convert a native document to a common document format, wherein the isolation service starts a single instance of the native application and monitors the single instance of the native application so that it complies with specified a parameter, condition, or setting of operation.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, and claims a benefit of priorityfrom U.S. patent application Ser. No. 15/167,014, filed May 27, 2016,entitled “APPLICATION ISOLATION SYSTEM,” which is a continuation of, andclaims a benefit of priority from U.S. patent application Ser. No.13/948,995, filed Jul. 23, 2013, now U.S. Pat. No. 9,367,531, entitled“APPLICATION ISOLATION SYSTEM,” which is a continuation of, and claims abenefit of priority from U.S. patent application Ser. No. 12/101,657,filed Apr. 11, 2008, now U.S. Pat. No. 8,510,648, entitled “APPLICATIONISOLATION SYSTEM,” which is a conversion of, and claims a benefit ofpriority under 35 U.S.C. 119(e) from U.S. Provisional Application No.60/911,772, filed on Apr. 13, 2007, entitled “APPLICATION ISOLATIONSYSTEM,” all of which are fully incorporated by reference herein.

BACKGROUND

Server software is sometimes used for document conversions. As anexample, a RightFax server that was commercialized by the assignee ofthe present patent application converted documents from a nativedocument format to a facsimile document format. A native document formatis a document format that is associated with an application (“nativeapplication”). Examples of native document formats and correspondingnative applications are DOC files and Microsoft® Word®, Workbooks andMicrosoft® Excel®, hypertext markup language documents and an Internetbrowser, and so forth.

Some of these native applications supported an interface calledautomation, which is also known as object linking and embedding (“OLE”)automation. The server software could command these applications usingtheir OLE automation interfaces to open a document and print thedocument. When printing the document, a printer driver can be specified,such as to print the document in a common document format. Examples ofcommon document formats include Adobe@ Portable Document Format, HewlettPackard@ Printer Control Language, facsimile or Tagged Image File Format(“TIFF”), and Adobe@ PostScript®. Using the RightFax server, forexample, a user could provide a native document format file for sendingvia facsimile. The RightFax server would receive the document, employthe native application to convert the document to a TIFF common documentformat, and send the converted TIFF formatted document via facsimileservices.

Document conversion server software, such as the RightFax server, isdesigned to function in high-volume or high-use environments, and canreceive and convert many documents from many users. When the serversoftware receives multiple documents, it conventionally would createmultiple instances of the automated native application to convertseveral documents concurrently. However, the native applications aregenerally designed for use by a single user at a time. When multipleinstances of the native applications are launched concurrently, theysometimes behave unexpectedly, such as by freezing or crashing (e.g.,because of memory leaks, prompts for user input, and so forth).Oftentimes, the native applications would freeze or crash for variousunknown reasons. When this occurs, the document conversion serversoftware can also freeze or crash, such as when the document conversionserver software and the native application operate in the same processspace.

Other technology exists for converting documents from a native documentformat to a common document format. The document conversion serversoftware could employ this technology. However, this technology commonlydoes not support all features of the native applications and so theresulting conversion often does not provide adequate fidelity. As anexample, when this technology receives a Word® document containing anembedded Microsoft® Excel® chart or spreadsheet, the technology may notproduce output that is similar to what the native application (e.g.,Microsoft® Word® in this case) would produce.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, identical reference numbers identify similar elementsor acts. The sizes and relative positions of elements in the drawingsare not necessarily drawn to scale. For example, the shapes of variouselements and angles are not drawn to scale, and some of these elementsare arbitrarily enlarged and positioned to improve drawing legibility.Further, the particular shapes of the elements as drawn are not intendedto convey any information regarding the actual shape of the particularelements, and have been solely selected for ease of recognition in thedrawings.

FIG. 1 is a block diagram illustrating a suitable computing environmentin which an application isolation system can operate in someembodiments.

FIG. 2 is a block diagram illustrating components associated with theapplication isolation system in various embodiments.

FIG. 3 is a block diagram illustrating additional components associatedwith the application isolation system in various embodiments.

FIGS. 4-5 are user interface diagrams illustrating user interfacesprovided by the application isolation system in various embodiments.

FIG. 6 is a flow diagram illustrating a handle_documents routine invokedby the application isolation system in some embodiments.

FIG. 7 is a flow diagram illustrating a check_printed_document routineinvoked by the application isolation system in some embodiments.

FIG. 8 is a flow diagram illustrating a start_isolation_service routineprovided by the application isolation system in some embodiments.

DETAILED DESCRIPTION A. Overview

An application isolation system is described. In various embodiments,the application isolation system isolates native applications from adocument conversion server software (“server software”) so that theserver software is unaffected by problems experienced by the nativeapplications. The application isolation system can employ queues tofacilitate document conversion, such as queues for incoming nativedocuments and outgoing converted documents. The application isolationsystem can employ a queue for enqueuing native documents for conversion.In various embodiments, the application isolation system may employ onequeue per native document type or one queue for all native documenttypes. A user can employ an application, such as a facsimile clientapplication or simply a file browser, to enqueue native documents forconverting. As an example, the user may employ a file explorer to copy anative document into a folder associated with documents enqueued forconversion and sending via facsimile. The application isolation systemmay also employ one or more queues for holding converted documents. Asexamples, the application isolation system can employ a queue forvarious common document types, such as facsimile or TIFF.

When the application isolation system detects that a native document isready for conversion, it can check whether a corresponding nativeapplication has been started. If it has not already started, theapplication isolation system can start a native application that iscapable of handling the enqueued native document. The applicationisolation system can then provide the enqueued native documents to thenative application it starts for conversion. In some embodiments, theapplication isolation system can provide the enqueued native documentsto the native application one at a time. In other embodiments, theapplication isolation system can provide the enqueued documents to thenative application concurrently. By first checking whether the nativeapplication has already started, the application isolation system canensure that one instance of the native application executes.

In various embodiments, the started native applications can executewithin a process space identified by the application isolation system.As an example, the application isolation system can be a service, suchas a Windows® NT® service (“NT service”), provided by a network serveroperating system. The NT service can start the native application. Invarious embodiments, the NT service may start multiple nativeapplications, such as one for each native document type that is to beconverted. In various embodiments, the started native applications mayexecute in separate process spaces or may execute within a singleprocess space. The application isolation system can then command thenative applications, such as by employing an automation interface orother application programming interface (“API”) the native applicationsprovide. As an example, the application isolation system can command anative application to open an enqueued document and print it using aprinter driver associated with a specified common document format. Whenthe native application employs a specified printer driver, the printerdriver can receive printing commands from the native application andproduce an output, such as in TIFF or other common document format.

In various embodiments, the application isolation system can use othermechanisms for converting files. As examples, the application isolationsystem can print a native document to a file, store a converted file inmemory for viewing, convert a native document to a format that can beused by another application, and so forth.

The application isolation system can monitor each native application andprint request to ensure that the native application is functioning asexpected. A user, e.g., an administrator, can provide variousconfiguration parameters, conditions, or settings to the applicationisolation system, such as to allocate a specified amount of memory,identify a maximum time for conversion, specify a maximum number ofattempts at document conversion, and so forth. These parameters,conditions, and settings can together be referred to herein as simply“parameters.” The application isolation system can monitor or enforcethese parameters. As an example, the application isolation system canallocate the specified amount of memory to native applications itstarts. When a process associated with a native application requestsadditional memory, such as by allocating more memory using an operatingsystem's memory allocation API, the application isolation system canrestart the native application. As another example, when the applicationisolation system detects that a native application is taking more timethan the identified maximum time to convert a document, it can restartthe native application and the document conversion process for thatdocument. By restarting native applications when they take more timethan anticipated, the application isolation system can substantiallyreduce the latency between document conversions that sometimes occur,e.g., when native applications complete processing a native document,and thereby facilitate document conversions in high volume environments.Thus, the application isolation system is able to monitor and manage theconversion and rendering of native documents by native applications.When multiple native documents of different types are converted, theapplication isolation system can monitor and manage each correspondingnative application.

In some embodiments, the application isolation system can tune themaximum time, such as based on measuring time to convert known documentsor profiling the application isolation system over time. When a nativeapplication indicates that a document cannot be converted, that theconverted document has no content, or other circumstances in which theapplication isolation system detects an error condition, the applicationisolation system can reattempt document conversion a specified maximumnumber of times. When the maximum number of attempts is reached, theapplication isolation system may restart the native application. Theapplication isolation system can detect which conversion process hasfailed, and thus which native application has failed. The applicationisolation system can report these and other errors, as well assuccessful conversions or other operating information, in a log, such asan event log.

The application isolation system may also provide other tunableparameters. As an example, the application isolation system may enable auser to set a maximum file size that can be converted, specify documenttypes that can or cannot be converted, and so forth. The applicationisolation system may also provide notifications to users, such as via alog, electronic messaging, and so forth.

As previously stated, the application isolation system is an NT servicein some embodiments. The operating system can be configured to restartthe application isolation system automatically when it fails. When theapplication isolation system restarts, it can ensure that the conversionprocess is restarted for documents it was in the process of convertingwhen it failed. The application isolation system can store status, suchas which native documents are being converted in a persistent storage,e.g., in a registry or flash random access memory, so that it can checkthe prior status when it restarts after a failure. In some embodiments,the application isolation system can also employ various queues to checkstatus, such as by checking the status of documents in the converteddocuments queue.

By configuring, monitoring, and automatically administering theconversion process using single instances of native applications, theapplication isolation system causes the document conversion serversoftware to be more robust and reliable. As an example, the applicationisolation system can terminate and restart a native application thatappears to be causing failures but ignore another native applicationthat does not exhibit problems.

In some embodiments, the application isolation system can be extended toemploy native applications in various forms, such as executableapplications, dynamic link libraries, intermediate language code, and soforth.

In various embodiments, the application isolation system can employvarious third party software, such as native applications (e.g.,Microsoft® Word®), queuing technology (e.g., Microsoft® MessageQueuing®), operating systems (e.g., Microsoft® Windows®, Apple®Macintosh® Operating System), and so forth.

In various embodiments, the application isolation system can be used toisolate applications or other processes that perform variousconversions, such as documents from one type to another, opticalcharacter recognition, text-to-speech, speech-to-text, imagerecognition, and so forth.

In various embodiments, the application isolation system may receive anindication of a user or user group that has provided the native documentand can cause the native application to load files corresponding to theuser or user group, such as font files, user dictionaries, templates,and so forth. In other embodiments, or when no user or group isspecified, the application isolation system may load similar files thatare shared by multiple users or user groups.

B. Illustrated Embodiments

The application isolation system will now be described with reference tothe figures. Although the figures illustrate some embodiments, oneskilled in the art will understand that other embodiments andcombinations of the illustrated embodiments are also possible. Somedetails that one skilled in the art would be presumed to know have beenomitted from the figures.

1. System Components

FIG. 1 and the following discussion provide a brief, general descriptionof a suitable computing environment in which aspects of the applicationisolation system can be implemented. Although not required, aspects andembodiments will be described in the general context ofcomputer-executable instructions, such as routines executed by ageneral-purpose computer, e.g., a server or personal computer. Thoseskilled in the relevant art will appreciate that the technology can beimplemented or practiced with other computer system configurations,including Internet appliances, hand-held devices, wearable computers,cellular or mobile phones, multi-processor systems, microprocessor-basedor programmable consumer electronics, set-top boxes, network PCs,mini-computers, mainframe computers, and the like. The technology can beembodied in a special purpose computer or data processor that isspecifically programmed, configured, or constructed to perform one ormore of the computer-executable instructions explained in detail below.Indeed, the term “computer”, as used generally herein, refers to any ofthe above devices, as well as any data processor or any device capableof communicating with a network, including consumer electronic goodssuch as game devices, cameras, or other electronic devices having aprocessor and other components, e.g., network communications circuitry.

The technology can also be employed in distributed computingenvironments, where tasks or modules are performed by remote processingdevices, which are linked through a communications network, e.g., aLocal Area Network (“LAN”), Wide Area Network (“WAN”), or the Internet.In a distributed computing environment, program modules or subroutinesmay be located in both local and remote memory storage devices. Aspectsof the technology described below may be stored or distributed oncomputer-readable media, including magnetic and optically readable andremovable computer discs, stored as firmware in chips (e.g., EEPROMchips), as well as distributed electronically over the Internet or overother networks (including wireless networks). Those skilled in therelevant art will recognize that portions of the technology may resideon a server computer, while corresponding portions reside on a clientcomputer. Data structures and transmission of data particular to aspectsof the technology are also encompassed by the technology.

Referring to FIG. 1, an embodiment employs a computer 100, such as apersonal computer or workstation, having one or more processors 101coupled to one or more user input devices 102 and data storage devices104. The computer can also be coupled to an output device such as adisplay device 106 or other optional output devices 108 (e.g., printer,plotter, speakers, tactile or olfactory output devices, etc.). Thecomputer may be coupled to external computers, such as via an optionalnetwork connection 110, a wireless transceiver 112, or both.

The input devices 102 may include a keyboard and/or a pointing devicesuch as a mouse. Other input devices are possible such as a microphone,joystick, pen, game pad, scanner, digital camera, video camera, and thelike. The data storage devices 104 may include any type ofcomputer-readable media that can store data accessible by the computer100, such as magnetic hard and floppy disk drives, optical disk drives,magnetic cassettes, tape drives, flash memory cards, digital video disks(DVDs), Bernoulli cartridges, RAMs, ROMs, smart cards, etc. Indeed, anymedium for storing or transmitting computer-readable instructions anddata may be employed, including a connection port to or node on anetwork such as a local area network (LAN), wide area network (WAN), orthe Internet (not shown in FIG. 1). Aspects of the technology may bepracticed in a variety of other computing environments.

FIG. 2 is a block diagram illustrating components associated with theapplication isolation system 200 in various embodiments. The applicationisolation system 200 can include a native document 202 that can beconverted to other document types. Examples of native document types areMicrosoft® Word® documents, Microsoft® Excel® documents, and so forth. Aserver software 204 can function with other components to convert thenative document 202. As an example, the server software 204 can employan isolation service 205 to convert the document. The isolation service205 can be an NT service. The isolation service 205 can issue variouscommands to a native application 206, such as by employing an automationinterface or other API provided by the native application 206. Asexamples, the isolation service 205 can issue start 212, open document214, print 216, or close 218 commands to the native application 206. Theisolation service 205 can issue the start 212 command to start thenative application 206, such as when the native application 206 is notalready executing. The isolation service 205 can issue the open document214 command such as when it retrieves a native document from a queue.The isolation service 205 can issue the print 216 command to print theopen native document. When the print 216 command is issued, the nativeapplication 206 can employ a printer driver 208 to print the document.In some embodiments, the isolation service 205 may specify a printerdriver 208 that the native application 206 is to employ. As examples,the isolation service 205 may specify a TIFF printer driver, PrinterControl Language (“PCL”) printer driver, etc. When the printer driver208 completes printing, it produces a document 210 in a desired documentformat or a common document format, such as in TIFF, PCL, or othercommon document format. The server software 204 and isolation service205 components may operate at a server computing device 220. The servercomputing device 220 is described in further detail immediately below inrelation to FIG. 3.

FIG. 3 is a block diagram illustrating additional components associatedwith the application isolation system 300 in various embodiments. Aserver computing device 220 can include server software 204, such as adocument conversion server software, and an isolation service 205. Theserver software 204 and isolation service 205 components were describedabove in relation to FIG. 2. The server computing device 220 mayadditionally include queuing technology 302, such as Microsoft® MessageQueuing®. The queuing technology provides a facility for softwarecomponents to enqueue and dequeue messages, documents, or other items.

2. User Interfaces

FIGS. 4-5 are user interface diagrams illustrating user interfacesprovided by the application isolation system in various embodiments.

FIG. 4 is a user interface diagram illustrating a configuration userinterface employed by the application isolation system in someembodiments. The user interface 400 enables a user, such as a systemadministrator, to configure the application isolation system. The usercan specify, for various native applications 402 a, 402 b, and 402 c,maximum memory 404, maximum conversion time 406, maximum conversionattempts 408, and other parameters. The user can specify differentparameters for various native applications. The user can also configureor view logging information 410 (described in further detail below inrelation to FIG. 5). The user can also specify user accounts that theapplication isolation system is to use, such as to start nativeapplications, perform logging, and so forth. As an example, a systemadministrator may identify a limited-use user account so that theapplication isolation system does not inadvertently provide highersecurity privileges to a user who provides a document for conversion.

FIG. 5 is a user interface diagram illustrating another configurationuser interface employed by the application isolation system in someembodiments. The user interface 500 enables a user to specify the typesof messages that the application isolation system will record in a log.As an example, the illustrated embodiment shows that a user hasrequested the logging of errors relating to a client API 502 and allevents relating to conversion of Microsoft® Excel® documents 504.

While some aspects of user interfaces have been illustrated, one skilledin the art would recognize that other user interfaces are also possible.

3. Routines

FIG. 6 is a flow diagram illustrating a handle_documents routine 600invoked by the application isolation system in some embodiments. Theapplication isolation system can invoke the handle_documents routine 600to handle an enqueued document. The handle_documents routine 600 beginsat block 602. At decision block 604, the routine determines whetherthere is a document in an incoming queue. As an example, the routine maycheck one or more incoming queues associated with native document types.If a document is waiting in a queue, the routine continues at block 606.Otherwise, the routine continues to wait at block 604 for an incomingdocument.

At block 606, the routine identifies a native application correspondingto the incoming document. In various embodiments, the applicationisolation system can identify the native application based on the typeof the incoming document. The type of the incoming document can bedetected based on its filename suffix, document contents, etc.

At decision block 608, the routine determines whether the identifiednative application is already executing. If the native application isalready executing, the routine continues at block 610. Otherwise, theroutine continues at block 616, where it starts the identified nativeapplication. One skilled in the art would recognize that various errorconditions could occur, in which case the application isolation systemmay need to react accordingly, such as by attempting to restart thenative application or return with a failure. The routine then continuesat block 610.

At block 610, the routine causes the native application corresponding tothe incoming document to load and print the document. The applicationisolation system can employ an automation interface or other APIprovided by the native application to load and print the document. Insome embodiments, the application isolation system may also specify aprinter driver that the native application is to use. As an example,when a user specifies a common document format into which the nativedocument is to be converted, the application isolation system may selecta corresponding printer driver.

At block 612, the routine invokes a check_printed_document subroutine toverify whether the native application correctly converted the nativedocument. The check_printed_document subroutine 612 is described infurther detail below in relation to FIG. 7.

At decision block 614, the routine determines whether the documentprinted successfully. If the document printed successfully, the routinereturns at block 620. Otherwise, the routine continues at decision block618.

At decision block 618, the routine determines whether it has alreadytried to print the native document a specified number of times. Thenumber of times can be specified by a user, such as a systemadministrator. As an example, the system administrator can specify thenumber of times to make an attempt using a user interface associatedwith the application isolation system, e.g., the user interfaceillustrated in FIG. 4 and described above. If the application isolationsystem has attempted to print the native document the specified numberof times, the routine returns at block 620, where it may return anerror. Otherwise, the routine returns at block 610 to retry printing thedocument.

FIG. 7 is a flow diagram illustrating a check_printed_document routine700 invoked by the application isolation system in some embodiments. Thecheck_printed_document routine 700 may be invoked by thehandle_documents routine described above in relation to FIG. 6. Thecheck_printed_document routine 700 begins at block 702.

At decision block 704, the routine determines whether the nativeapplication is taking too long to print. As an example, the routinedetermines whether the time difference between the present time and thetime at which the application isolation system requested the nativeapplication to begin printing exceeds a threshold amount specified by anadministrator or determined by the application isolation system to be areasonable amount of time, such as based on the document's size. If thenative application is taking too long to print the document, the routinecontinues at block 706. Otherwise, the routine continues at decisionblock 712.

At block 706, the routine shuts down the application and then attemptsto restart the application at block 708. The routine then indicates atblock 710 that the document was not printed. The routine then continuesat block 720, where it returns.

At decision block 712, the routine determines whether the nativeapplication is consuming too much memory. As an example, the routinedetermines whether the native application has allocated more memory thanwas specified in a configuration setting associated with the applicationisolation system. If the native application is consuming too muchmemory, the routine continues at block 706. Otherwise, the routinecontinues at decision block 714.

At decision block 714, the routine determines whether the nativeapplication printed the document. As an example, the routine candetermine whether an output file was printed, the file has more thanzero bytes, or whether the file has content. If the native applicationprinted the document, the routine continues at decision block 716.Otherwise, the routine continues at block 710. In some embodiments, theroutine may continue at block 706 instead of block 710.

At decision block 716, the routine determines whether a return valuefrom the native application indicates that the native applicationsuccessfully converted the document. If the return value indicates thatthe native application successfully converted the document, the routinecontinues at block 718. Otherwise, the routine continues at block 710.In some embodiments, the routine may continue at block 706 instead ofblock 710.

At block 718, the routine indicates that the native applicationsuccessfully printed the document. The routine then continues at block720, where it returns.

FIG. 8 is a flow diagram illustrating a start_isolation_service routine800 provided by the application isolation system in some embodiments. Anoperating system component, such as a service control manager component,may invoke the start_isolation_service routine 800, such as when theoperating system for the application isolation system restarts. Theroutine begins at block 802.

At decision block 804, the routine determines whether the applicationisolation system previously shut down improperly. As an example, theapplication isolation system may store an indication in a persistentstorage that it previously shut down properly. If the applicationisolation system previously shut down improperly, the routine continuesat block 806. Otherwise, if the application isolation system shut downproperly, the routine continues at block 816.

At block 806, the routine checks which document or which document typepreviously caused the application isolation system to shut downimproperly. At block 808, the routine starts the corresponding nativeapplication in isolation. In some embodiments, the application isolationsystem does not start other native applications, even when nativedocuments may be enqueued. At block 810, the routine causes the startednative application to load and print the document that previously causedthe application isolation system to shut down improperly. At block 812,the routine invokes the check_printed_document subroutine.

At decision block 814, the routine determines whether the documentprinted successfully. If the document printed successfully, the routinecontinues at block 816. Otherwise, at block 820, the routine removes thedocument from the queue and reports an error, such as in a log. Theroutine then continues at block 816.

At block 816, the routine starts the service normally. The applicationisolation system then continues to process enqueued native documents.The routine returns at block 818.

Although the illustrated embodiments are described in relation toconverting documents using a printing mechanism, other mechanisms can beemployed. As an example, the application isolation system can employfeatures provided by native applications to convert documents. Examplesof features include a “Save As” command, “Convert” command, and soforth. Alternatively, the application isolation system may provideadditional components for performing the conversion from one documenttype to another.

In some embodiments, the application isolation service can balanceapplication management versus process speed. For example, a facsimileserver application architecture might depend on large volumes of PCLconversion. To use the application isolation service to manage suchtasks may require additional processor time for inter-processcommunication, and also time to serialize tasks for the applicationisolation service. The application isolation service can be modified topermit parallelization so that it can handle a configurable ordynamically determined number of like tasks at once. This would permitconcurrent parallel processing of PCL conversions with the stability andapplication runtime management benefits of the application isolationservice.

In some embodiments, the application isolation system manages a documentconversion environment with components comprising a native applicationassociated with a native document type and an isolation service. Theisolation service determines whether a native application associatedwith the native document type has started and when it has not started,starts the native application and causes the started native applicationto load and convert a native document to a common document format,wherein the isolation service starts a single instance of the nativeapplication and monitors the single instance of the native applicationso that it complies with specified a parameter, condition, or setting ofoperation.

In some embodiments, the application isolation system performs a methodfor managing document conversion in a document conversion environment,comprising: determining that a document having a native document type isawaiting to be converted; identifying a native application correspondingto the native document type; determining whether the identified nativeapplication is executing; when the identified native application is notexecuting, starting the native application; commanding the nativeapplication to load and convert the document; and monitoring the nativeapplication to ensure that it complies with a specified parameter,condition, or setting. In some embodiments, computer-executableinstructions to perform this method are stored in a computer-readablestorage medium.

C. Conclusion

Various embodiments of the application isolation system are describedabove. It will be appreciated that the details set forth above areprovided to describe the embodiments in a manner sufficient to enable aperson skilled in the relevant art to make and use the disclosedembodiments. Several of the details and advantages, however, may not benecessary to practice some embodiments. Additionally, some well-knownstructures or functions may not be shown or described in detail, so asto avoid unnecessarily obscuring the relevant description of the variousembodiments. Although some embodiments may be within the scope of theclaims, they may not be described in detail with respect to the figures.Furthermore, features, structures, or characteristics of variousembodiments may be combined in any suitable manner. Moreover, oneskilled in the art will recognize that there are a number of othertechnologies that could be used to perform functions similar to thosedescribed above and so the claims should not be limited to the devicesor routines described herein. While processes or blocks are presented ina given order, alternative embodiments may perform routines havingsteps, or employ systems having blocks, in a different order, and someprocesses or blocks may be deleted, moved, added, subdivided, combined,and/or modified. Each of these processes or blocks may be implemented ina variety of different ways. Also, while processes or blocks are attimes shown as being performed in series, these processes or blocks mayinstead be performed in parallel, or may be performed at differenttimes. The headings provided herein are for convenience only and do notinterpret the scope or meaning of the claims.

The terminology used in the description is intended to be interpreted inits broadest reasonable manner, even though it is being used inconjunction with a detailed description of identified embodiments.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense as opposed to anexclusive or exhaustive sense; that is to say, in a sense of “including,but not limited to.” Words using the singular or plural number alsoinclude the plural or singular number, respectively. When the claims usethe word “or” in reference to a list of two or more items, that wordcovers all of the following interpretations of the word: any of theitems in the list, all of the items in the list, and any combination ofthe items in the list.

Aspects of the application isolation system may be stored or distributedon computer-readable media, including magnetically or optically readablecomputer discs, hard-wired or preprogrammed chips (e.g., EEPROMsemiconductor chips), nanotechnology memory, biological memory, or otherdata storage media. Indeed, computer implemented instructions, datastructures, screen displays, and other data under aspects of theapplication isolation system may be distributed over the Internet orover other networks (including wireless networks), on a propagatedsignal on a propagation medium (e.g., an electromagnetic wave(s), asound wave, etc.) over a period of time, or they may be provided on anyanalog or digital network (packet switched, circuit switched, or otherscheme). Those skilled in the relevant art will recognize that portionsof the application isolation system reside on various computing devices,such as a server computer, a client computer, and so forth. Thus, whilecertain hardware platforms are described herein, aspects of theapplication isolation system are equally applicable to nodes on anetwork or other types of computing devices.

These and other changes can be made in light of the above DetailedDescription. While the above description details certain embodiments anddescribes the best mode contemplated, no matter how detailed, variouschanges can be made. Implementation details may vary considerably, whilestill being encompassed by the application isolation system disclosedherein. As noted above, particular terminology used when describingcertain features or aspects of the application isolation system shouldnot be taken to imply that the terminology is being redefined herein tobe restricted to any specific characteristics, features, or aspects ofthe application isolation system with which that terminology isassociated. In general, the terms used in the following claims shouldnot be construed to limit the claims to the specific embodimentsdisclosed in the specification, unless the above Detailed Descriptionsection explicitly defines such terms. Accordingly, the actual scope ofthe claims encompasses not only the disclosed embodiments, but also allequivalents.

What is claimed is:
 1. A method, comprising: identifying, by a servicerunning on a computer, a native application based on a document type;determining, by the service, whether the native application is running,the service configured for issuing various commands to the nativeapplication; responsive to the native application not running,commanding the native application to start running, the commandingperformed by the service; commanding, by the service, the nativeapplication to open a document of the document type; commanding, by theservice, the native application to convert the document, wherein,responsive to the commanding to convert the document, the nativeapplication is operable to print the document to an output file, store aconverted file in memory for viewing, or convert the document to aformat usable by another application; determining, by the service,whether the native application correctly converted the document; andstoring, in a log by the service, an indication on whether the nativeapplication correctly converted the document.
 2. The method according toclaim 1, wherein the service is started by a network server operatingsystem running on the computer and wherein the service is configured forstarting multiple native applications.
 3. The method according to claim2, wherein started native applications of the multiple nativeapplications execute in separate process spaces or within a singleprocess space.
 4. The method according to claim 1, wherein the variouscommands comprise at least a start command, an open document command, aprint command, or a close command.
 5. The method according to claim 1,wherein the service issues the various commands to the nativeapplication through an automation interface or an applicationprogramming interface of the native application.
 6. The method accordingto claim 1, further comprising: selecting a driver based on auser-specified document format, wherein the driver is utilized by thenative application to convert the document.
 7. The method according toclaim 1, wherein the determining whether the native applicationcorrectly converted the document comprises: detecting whether an errorcondition has occurred; determining whether a return value from thenative application indicates that the native application successfullyconverted the document; or determining whether the output file hascontent.
 8. A system, comprising: a processor; a non-transitory computermemory; and stored instructions translatable by the processor forimplementing a service for: identifying a native application based on adocument type; determining whether the native application is running,the service configured for issuing various commands to the nativeapplication; responsive to the native application not running,commanding the native application to start running; commanding thenative application to open a document of the document type; commandingthe native application to convert the document, wherein, responsive tothe commanding to convert the document, the native application isoperable to print the document to an output file, store a converted filein memory for viewing, or convert the document to a format usable byanother application; determining whether the native applicationcorrectly converted the document; and storing, in a log, an indicationon whether the native application correctly converted the document. 9.The system of claim 8, wherein the service is started by a networkserver operating system running on the processor and wherein the serviceis configured for starting multiple native applications.
 10. The systemof claim 9, wherein started native applications of the multiple nativeapplications execute in separate process spaces or within a singleprocess space.
 11. The system of claim 8, wherein the various commandscomprise at least a start command, an open document command, a printcommand, or a close command.
 12. The system of claim 8, wherein theservice issues the various commands to the native application through anautomation interface or an application programming interface of thenative application.
 13. The system of claim 8, wherein the storedinstructions are further translatable by the processor for: selecting adriver based on a user-specified document format, wherein the driver isutilized by the native application to convert the document.
 14. Thesystem of claim 8, wherein the determining whether the nativeapplication correctly converted the document comprises: detectingwhether an error condition has occurred; determining whether a returnvalue from the native application indicates that the native applicationsuccessfully converted the document; or determining whether the outputfile has content.
 15. A computer program product comprising anon-transitory computer-readable medium storing instructionstranslatable by a processor for implementing a service for: identifyinga native application based on a document type; determining whether thenative application is running, the service configured for issuingvarious commands to the native application; responsive to the nativeapplication not running, commanding the native application to startrunning; commanding the native application to open a document of thedocument type; commanding the native application to convert thedocument, wherein, responsive to the commanding to convert the document,the native application is operable to print the document to an outputfile, store a converted file in memory for viewing, or convert thedocument to a format usable by another application; determining whetherthe native application correctly converted the document; and storing, ina log, an indication on whether the native application correctlyconverted the document.
 16. The computer program product of claim 15,wherein the service is started by a network server operating systemrunning on the processor and wherein the service is configured forstarting multiple native applications.
 17. The computer program productof claim 16, wherein started native applications of the multiple nativeapplications execute in separate process spaces or within a singleprocess space.
 18. The computer program product of claim 15, wherein thevarious commands comprise at least a start command, an open documentcommand, a print command, or a close command.
 19. The computer programproduct of claim 15, wherein the instructions are further translatableby the processor for: selecting a driver based on a user-specifieddocument format, wherein the driver is utilized by the nativeapplication to convert the document.
 20. The computer program product ofclaim 15, wherein the determining whether the native applicationcorrectly converted the document comprises: detecting whether an errorcondition has occurred; determining whether a return value from thenative application indicates that the native application successfullyconverted the document; or determining whether the output file hascontent.